// 链表
class ListNode {
  constructor(val) {
    this.val = val;
    this.next = null;
  }
}
/**
 * 根据数组创建一个链表
 * @param {Array} arr - 一个包含链表节点值的数组
 * @returns {ListNode|null} - 返回链表的头节点，如果数组为空则返回null
 */
const createLinkedList = arr => {
  // 如果数组为空，则返回null
  if (arr.length === 0) {
    return null;
  }
  const head = new ListNode(arr[0]);
  let current = head;
  // 遍历数组，从第二个元素开始，构建链表的后续节点
  for (let i = 1; i < arr.length; i++) {
    // 为当前节点的下一个节点创建一个新的ListNode实例
    current.next = new ListNode(arr[i]);
    // 移动当前节点指针到下一个节点
    current = current.next;
  }
  return head;
};
const head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);
/**
 * 遍历链表
 * 该函数接收链表的头节点作为参数，然后遍历链表，打印每个节点的值
 * @param {Object} head - 链表的头节点
 */
const bianLiLinkedList = head => {
  let current = head;
  while (current !== null) {
    console.log(current.val);
    current = current.next;
  }
};
/**
 * 遍历链表的递归函数
 * 该函数从链表的头部开始，逐个节点向下遍历，打印每个节点的值
 * 当遍历到链表末尾（即节点为null）时，递归结束
 * @param {Node} head - 链表的头节点如果链表为空（即头节点为null），则不执行任何操作
 */
const dgBianLiLinkedList = head => {
  if (head === null) {
    return;
  }
  console.log(head.val);
  dgBianLiLinkedList(head.next);
};

/**
 * 反转链表
 * @param {*} head
 */

/**旋转数组-
 *
 *
 */

//冒泡排序
